package com.cetcs.kmga.dataManager.dao.mybatis;

import com.cetcs.kmga.dataManager.entity.dataManager.vo.ResourceTrafficTempVo;
import com.cetcs.kmga.dataManager.entity.dataManager.vo.ResourceTrafficVi;
import com.cetcs.kmga.dataManager.entity.dataManager.vo.ResourceTrafficVo;
import com.cetcs.kmga.dataManager.entity.dataManager.vo.TrafficResrcIpTodayView;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 资源流量,资源使用 相关统计查询Dao
 * Created by root on 2017/10/11.
 */
@Repository
public interface ResourceTrafficMapper {

    /**
     * 查询资源的流量概览
     */
    PageList<ResourceTrafficTempVo> findResourceTrafficOfDay(PageBounds pageBounds, @Param("keyword") String keyword);
    /**
     * 查询资源的流量概览
     */
    ResourceTrafficTempVo findResourceTrafficOfDayById(@Param("id") String id);

    /**
     * 查询资源的平均流量,包括读取,写入,总流量等
     * @return
     */
    ResourceTrafficVi findAvgOfResourceTraffic(@Param("resourceId") Integer resourceId);
    //最近一月统计流量概览
    Map findAvgAndMaxTrafficOfAllResource(@Param("resourceId") Integer resourceId);

    /**
     * 查询访问量:查询所有资源的访问流量,包括读取流量和写入流量
     * @param timeCycle 统计周期,1-小时,2-天,3-月
     */
    List<ResourceTrafficVi> findAllAccessNum(@Param("timeCycle") int timeCycle);
    //查询访问量:查询具体某个资源的访问流量,包括读取流量和写入流量
    List<ResourceTrafficVi> findAllAccessNumOfResrc(@Param("timeCycle") int timeCycle, @Param("resourceId") int resourceId);

    /**
     * 查询访问次数:查询所有资源的访问次数
     * @param timeCycle 统计周期,1-小时,2-天,3-月
     */
    List<ResourceTrafficVi> findAllAccessTimes(@Param("timeCycle") int timeCycle);
    //查询访问次数:查询具体资源的访问次数
    List<ResourceTrafficVi> findAccessTimesOfResource(@Param("timeCycle") int timeCycle, @Param("resourceId") int resourceId);

    /**
     * 查询资源的访问客户端IP列表
     */
    PageList<TrafficResrcIpTodayView> findIpOfResourceTraffic(PageBounds pageBounds, @Param("resourceId") int resourceId, @Param("keyword") String keyword);

    PageList<TrafficResrcIpTodayView> findIpOfAppTraffic(PageBounds pageBounds, @Param("appId") int appId);


}
